package cn.hchaojie.javase.day04;

import java.util.Arrays;

import org.junit.Test;

public class ParseValue {
	@Test
	public void test() {
		int x = 10;
		change(x);				// 调用方法的时候，x叫实际参数
		
		System.out.println(x);
	}
	
	// value的值是x值的一个拷贝
	
	// value 是方法里面的一个局部变量
	public static void change(int value) {		// value叫形式参数
		value = 20;
	}
	
	@Test
	public void test1() {
		// 从堆内存里面申请一块空间，
		
		// 引用		= 对象
		int[] array = new int[3];
		
		int[] array2;
		array2 = new int[3];
		
		int[] array3;
		array3 = array2;
		
		array[0] = 1;
		array[1] = 1;
		array[2] = 1;
	}
	
	// Scanner scanner = new Scanner();
	// 类      引用      对象
	// String	
	// int[] array    array.length
	
	// 数组作为参数的时候，方法内部可以改变数组的元素。
	@Test
	public void testReverse() {
		int[] array = {1, 3, 5, 7, 9};
		
		// array是一个引用，作为方法的参数的话，
		// 会先在方法内部创建新的引用，然后把原来的引用地址赋值给新的引用
		reverse(array);
		
		System.out.println(Arrays.toString(array));
	}
	
	// 数组倒置
	public static void reverse(int[] array) {
		// 通过引用可以改变对象
		for (int i = 0; i < array.length / 2; i++) {
			int temp = array[i];
			array[i] = array[array.length - i - 1];
			array[array.length - i - 1] = temp;
		}
	}
	
	@Test
	public void testChangeArray() {
		int[] array = {1, 3, 5, 7, 9};
		change(array);
		System.out.println(Arrays.toString(array));
	}

	
	public static void change(int[] array) {
		array = new int[1];
		array[0] = 1;
		
		System.out.println(Arrays.toString(array));
	}
}
